Cant get child attributes to save through parent model in rails console ActiveModel::UnknownAttributeError:
Cant get child attributes to save through parent model in rails console ActiveModel::UnknownAttributeError:
所以我一直在尝试测试我的模型,看看我是否可以使用 Gallery.new(:picture => File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
通过 rails 控制台添加图片,但我得到下面列出的以下错误。我这样做是因为我无法将图片保存在我的 rails 应用程序中,我只是重新呈现 new
模板和新视图中列出的部分表单。
我想知道大家是如何解决这些错误的,因为据我所知,我的模型没有问题。我的迁移也似乎很好。我认为 accept_nested_attributes_for
允许 Picture
模型属性通过 Gallery
模型传递。
控制台中的错误是
irb(main):002:0> Gallery.new(:picture => File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
ActiveModel::UnknownAttributeError: unknown attribute 'picture' for Gallery.
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:48:in `_assign_attribute'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:40:in `block in _assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `each'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `_assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/attribute_assignment.rb:26:in `_assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:33:in `assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/core.rb:319:in `initialize'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
from (irb):2
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'irb(main):003:0> ^C
irb(main):003:0>
我的模特是,图库
class Gallery < ApplicationRecord
has_many :pictures
validates :name, presence: true
validates :cover, presence: true
accepts_nested_attributes_for :pictures, allow_destroy: true
end
图片
class Picture < ApplicationRecord
belongs_to :gallery
validates :gallery_id, presence: true
validates :picture, presence: true
mount_uploader :picture, PictureUploader
serialize :picture, JSON
end
迁移、画廊
class CreateGalleries < ActiveRecord::Migration[5.0]
def change
create_table :galleries do |t|
t.string :name
t.integer :cover
t.timestamps
end
end
end
图片
class CreatePictures < ActiveRecord::Migration[5.0]
def change
create_table :pictures do |t|
t.integer :gallery_id
t.string :picture
t.timestamps
end
end
end
ActiveModel::UnknownAttributeError: unknown attribute 'picture' for
Gallery.
你做错了。你应该关联 图片与画廊实例而不是将其作为属性传递给画廊模型.
g = Gallery.new(name: 'Some Name', cover: 'Some Cover')
g.save!
p = g.pictures.new(picture: File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
p.save!
所以我一直在尝试测试我的模型,看看我是否可以使用 Gallery.new(:picture => File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
通过 rails 控制台添加图片,但我得到下面列出的以下错误。我这样做是因为我无法将图片保存在我的 rails 应用程序中,我只是重新呈现 new
模板和新视图中列出的部分表单。
我想知道大家是如何解决这些错误的,因为据我所知,我的模型没有问题。我的迁移也似乎很好。我认为 accept_nested_attributes_for
允许 Picture
模型属性通过 Gallery
模型传递。
控制台中的错误是
irb(main):002:0> Gallery.new(:picture => File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
ActiveModel::UnknownAttributeError: unknown attribute 'picture' for Gallery.
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:48:in `_assign_attribute'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:40:in `block in _assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `each'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `_assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/attribute_assignment.rb:26:in `_assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:33:in `assign_attributes'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/core.rb:319:in `initialize'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
from (irb):2
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'irb(main):003:0> ^C
irb(main):003:0>
我的模特是,图库
class Gallery < ApplicationRecord
has_many :pictures
validates :name, presence: true
validates :cover, presence: true
accepts_nested_attributes_for :pictures, allow_destroy: true
end
图片
class Picture < ApplicationRecord
belongs_to :gallery
validates :gallery_id, presence: true
validates :picture, presence: true
mount_uploader :picture, PictureUploader
serialize :picture, JSON
end
迁移、画廊
class CreateGalleries < ActiveRecord::Migration[5.0]
def change
create_table :galleries do |t|
t.string :name
t.integer :cover
t.timestamps
end
end
end
图片
class CreatePictures < ActiveRecord::Migration[5.0]
def change
create_table :pictures do |t|
t.integer :gallery_id
t.string :picture
t.timestamps
end
end
end
ActiveModel::UnknownAttributeError: unknown attribute 'picture' for Gallery.
你做错了。你应该关联 图片与画廊实例而不是将其作为属性传递给画廊模型.
g = Gallery.new(name: 'Some Name', cover: 'Some Cover')
g.save!
p = g.pictures.new(picture: File.new('E:\Owner (Backup)\Pictures\Skateboard 1.jpg', 'r'))
p.save!