[英]Updating nested attributes in rails console
如何更新嵌套屬性? 我收到此錯誤:
2.1.3 :021 > user.contact_requests.message = "dsfkjsdklfhdsf"
NoMethodError: undefined method `message=' for #<ActiveRecord::Associations::CollectionProxy []>
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0.beta2/lib/active_record/relation/delegation.rb:136:in `method_missing'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0.beta2/lib/active_record/relation/delegation.rb:99:in `method_missing'
from (irb):21
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:110:in `start'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:9:in `start'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0.beta2/lib/rails/commands.rb:17:in `<top (required)>'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `require'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `block in require'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:233:in `load_dependency'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `require'
from /Users/bli1/Development/RoR/Boothie/bin/rails:8:in `<top (required)>'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:242:in `load'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:242:in `block in load'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:233:in `load_dependency'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:242:in `load'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/commands/rails.rb:6:in `call'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/command_wrapper.rb:38:in `call'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/application.rb:180:in `block in serve'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/application.rb:153:in `fork'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/application.rb:153:in `serve'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/application.rb:128:in `block in run'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/application.rb:122:in `loop'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/application.rb:122:in `run'
from /Users/bli1/.rvm/gems/ruby-2.1.3/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in `<top (required)>'
from /Users/bli1/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/bli1/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'2.1.3 :022 > user.contact_requests.messages = "dsfkjsdklfhdsf"
這是我的架構:
楷模:
class User < ActiveRecord::Base
# before_save { |user| user.email = user.email.downcase }
has_many :contact_requests
# validate the presence of the attributes
validates(:first_name, presence: true)
validates(:last_name, presence: true)
validates(:email, presence: true)
accepts_nested_attributes_for :contact_requests
end
class ContactRequest < ActiveRecord::Base
belongs_to :user
validates :user_id, presence: true
validates :message, presence: true, length: { maximum: 500 }
end
當我做:
user = User.new
user.email = "email@email.com"
user.last_name = "li"
user.first_name = "brad"
user.phone_number = "21321323"
一切正常,但是當我這樣做時
user.contact_requetst.message = "jdksfhjskdhfd"
我收到上面顯示的錯誤。
user.save
將只保存users
部分
這是因為user.contact_requests
是對象的集合。 您不能以這種方式設置要收集的屬性,而是應該選擇一個具有
user.contact_requests.first.message = "jdksfhjskdhfd"
例如,或者,如果要為所有請求設置消息,則應
user.contact_requests.map { |r| r.message = "jdksfhjskdhfd" }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.