Làm cách nào tôi có thể sử dụng allowRested_attributes_for helper của ActiveRecord trong liên kết has_many: thông qua việc thêm thuộc tính vào bảng kết hợp?accept_nested_attributes_for thông qua tham gia bảng với các thuộc tính trên tham gia
Ví dụ, nói rằng tôi đã có một mô hình Đội bóng:
class Team < ActiveRecord::Base
role = Role.find_by_name('player')
has_many :players,
:through => :interactions,
:source => :user,
:conditions => ["interactions.role_id = ?", role.id] do
class_eval do
define_method("<<") do |r|
Interaction.send(:with_scope, :create => {:role_id => role.id}) { self.concat r }
end
end
end
end
Đội has_many players
qua interactions
, vì một người dùng có thể chiếm một số vai trò (máy nghe nhạc, quản lý, vv).
Tôi có thể sử dụng accept_nested_attributes_for trong khi đồng thời thêm thuộc tính vào bảng kết nối như thế nào?
Nếu tôi có một kỷ lục đội ngũ hiện có team
và một hồ sơ người dùng hiện user
, tôi có thể làm một cái gì đó như thế này:
team.players << user
team.players.size
=> 1
Nhưng nếu tôi có thể tạo một nhóm mới với một máy nghe lồng nhau:
team = Team.create(:name => "New York Lions",
:players_attributes => [{:name => 'John Doe'}])
team.players.size
=> 0
Trong ví dụ cuối cùng, nhóm, người dùng và bản ghi tương tác được tạo (và nhóm có người dùng thông qua tương tác), nhưng thuộc tính interact.role_id không được đặt ở đây.
Bạn đã từng giải quyết vấn đề này chưa? –
câu trả lời cho câu hỏi của bạn có thể được tìm thấy trong bài đăng này: http://stackoverflow.com/questions/2182428/rails-nested-form-with-has-many-through-how-to-edit-attributes-of-join -mô hình –