2

With the params:

{"utf8"=>"✓",
 "_method"=>"put",
 "authenticity_token"=>"mZ0yUwkdUhi8JVeXfPPzukYr8QfmJjC0UptG3rS08Fo=",
 "commit"=>"Update Artist",
 "artist"=>{"name"=>"Test",
 "bio"=>"Some bio",
 "city"=>"Chicago",
 "state"=>"IL",
 "visible"=>"1",
 "published_at"=>"2013-06-05 20:23:48 UTC",
 "confirmed_at"=>"2013-06-05 12:00:00 UTC",
 "galleries_attributes"=>{"0"=>{"media_items_attributes"=>{"1370495729379"=>{"_destroy"=>"0",
 "mediable_type"=>"Image",
 "mediable_id"=>"45"}}}}},
 "id"=>"test"}

I have the following in my attr_accesible on my artist model

attr_accessible :media_items_attributes, :galleries_attributes, :name, :bio, :permalink, :billboard_image_id, :featured_at, :city, :state, :country, :latitude, :longitude, :visible, :confirmed_at, :published_at, :deleted_at, :genre_ids, as: :admin

but i still get an exception

Can't mass-assign protected attributes: media_items_attributes

I have the following in my gallery model

attr_accessible :media_items_attributes

i am puzzled.

where do i need to allow :media_items_attributes ?

class Gallery < ActiveRecord::Base
  belongs_to :galeryable
  attr_accessible :media_items_attributes
  has_many :media_items, :as => :mediable


  accepts_nested_attributes_for :media_items

end


class Artist < ActiveRecord::Base


# Basic attibutes, associations and validations
  # ----------------------------------------------------------------------------------------------------

  attr_accessible :media_items_attributes, :galleries_attributes, :name, :bio, :permalink, :billboard_image_id, :featured_at, :city, :state, :country, :latitude, :longitude, :visible, :confirmed_at, :published_at, :deleted_at, :genre_ids, as: :admin

  # Validations
  validates_presence_of :name, :bio, :city, :state
  validate :publishable

  # Geocode the artist based on city and state
  geocoded_by :city_state
    after_validation :geocode

  has_many :genrefications, as: :genreable, dependent: :destroy
  has_many :genres, through: :genrefications
  has_many :galleries, as: :galleryable
  accepts_nested_attributes_for :galleries

end
4

2 回答 2

2

我的猜测:在画廊模型中。

从嵌套哈希的外观来看 - media_items_attributes 位于 gallery_attributes 部分。所以你需要把它放在那个级别。

于 2013-06-06T05:18:38.397 回答
1

尽管您的问题已解决,但我正在回复此问题以供其他人了解:

这是一个典型的场景:

如果模型定义如下:

用户.rb

class User < ActiveRecord::Base
  attr_accessible  :name, :posts_attributes
  has_many :posts
  accepts_nested_attributes_for :posts
end

post.rb

class Post < ActiveRecord::Base
  attr_accessible :title, :content :user_id
end

那么一切都应该没问题。您可以将带有帖子的用户保存为嵌套属性。

这是一个包含此场景的示例项目:

https://github.com/railscash/sample_change_user_role

于 2013-06-06T06:05:01.520 回答