Наистина съм нов в RoR, така че се извинявам, ако не мисля за това правилно. Имам отчет, където трябва да мога да присвоя няколко потребители към този отчет. Един потребител може да бъде присвоен на повече от един отчет и един отчет може да има множество потребители. Как да създам връзката на базата данни, където това би било разрешено. Разбирам как да присвоя един потребител на един отчет, но не много потребители на един отчет.
Създаване на връзка с база данни, която позволява множество присвоявания на един и същ идентификатор
Отговори (2)
Бих използвал клас за присъединяване, за да направя това:
class Report
has_many :assignments
has_many :users :through => :assignments
end
class User
has_many :assignments
has_many :reports, :through => :assignments
end
class Assignment
belongs_to :report
belongs_to :user
end
Класът Assignment
има две полета: report_id
и user_id
за създаване на връзката.
Прочетете ръководството на Ruby on Rails за асоциации на активни записи: http://guides.rubyonrails.org/association_basics.html
Горещо ви препоръчвам да се запознаете с ръководствата на Ruby on Rails. Те ще се окажат безценен актив!! За тази задача сайтът ще бъде RailsGuides Active Record Associations.
Що се отнася до кода, вие искате да създадете три таблици на база данни: отчети, reports_users и потребители, като reports_users е таблица за присъединяване.
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name, :null => false
t.timestamps
end
end
end
class CreateReports < ActiveRecord::Migration
def change
create_table :reports do |t|
t.string :name, :null => false
t.timestamps
end
end
end
class ReportsUsers < ActiveRecord::Migration
def change
create_table :reports_users, :id => false do |t|
t.references :user, :null => false
t.references :report, :null => false
end
end
end
След като стартирате тази миграция, трябва да настроите активните асоциации на записи във вашите модели.
class User < ActiveRecord::Base
has_and_belongs_to_many :reports
end
class Report < ActiveRecord::Base
has_and_belongs_to_many :user
end
Това ще настрои базата данни и връзките на моделите много към много. Това ще ви помогне да започнете. Сега трябва да създадете някои изгледи