我一共有三个模型:用户、专辑和流派。用户是指艺术家(歌手、作曲家、音乐家等)。一张专辑可以有许多艺术家(用户)和许多流派。一个艺术家可以为许多专辑作曲/唱歌。总之我有以下模型和控制器动作。我在数据库中创建了两个 HABTM 关系:albums_genres 和 users_albums。
//User model
class User < ActiveRecord::Base
has_and_belongs_to_many :albums
end
//Album model
class Album < ActiveRecord::Base
has_and_belongs_to_many :genres
has_and_belongs_to_many :users
end
//Genre model
class Genre < ActiveRecord::Base
has_and_belongs_to_many :albums
end
//albumController create method
def create
@user = current_user
@album = @user.albums.new(params[:album])
if @album.save
...
end
end
当我按如下方式发送数据时,数据会正确插入到 Albums_users 中。
"Album"=>{"title"=>"Test album", "description"=>"test description"
但是我也想将数据插入到 albums_genres 表中。为此,我的参数数据如下所示:
"Album"=>{"title"=>"Test album", "description"=>"test description", "genre_ids"=>["1", "2", "3"]}
然后我得到一个错误Can't mass-assign protected attributes: Genre_ids。它试图将数据插入到专辑表中,我认为应该将genre_ids 插入到相册_genres 中。所以我的问题是我需要如何编写控制器代码?编写控制器和/或模型代码的更好方法受到高度赞赏。先感谢您!参考资料来自:http ://railscasts.com/episodes/17-habtm-checkboxes