Ruby on rails 为什么可以';更新有很多:通过rails 4中的关联
我的项目是关于一个在线购物网站,使用RubyonRails购买手机。 现在我正在尝试为用户创建一个篮子Ruby on rails 为什么可以';更新有很多:通过rails 4中的关联,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的项目是关于一个在线购物网站,使用RubyonRails购买手机。 现在我正在尝试为用户创建一个篮子 class User < ActiveRecord::Base has_many :baskets has_many :phones, :through => :baskets end class Phone < ActiveRecord::Base has_many :baskets has_many :users , :through => :ba
class User < ActiveRecord::Base
has_many :baskets
has_many :phones, :through => :baskets
end
class Phone < ActiveRecord::Base
has_many :baskets
has_many :users , :through => :baskets
end
class Basket < ActiveRecord::Base
belongs_to :user
belongs_to :phone
end
这是错误的!
我不知道为什么它不起作用。这两个不同的东西,类和实例 Phone是一个类,但篮子的关系属于该类的一个实例 所以类似这样的东西应该允许你使用关系
instance_of_phone = Phone.first
instance_of_phone.baskets.where(user_id: 1).update(name: 'abc')
另一种方法是直接访问
Basket.find_by(user_id: 1, basket_id: 1).update(name: 'abc')
首先,正如@Austio的回答所指出的,您需要在类的实例上使用关联方法,而不是类本身。所以:
.baskets
而不是Phone.baskets
其次,如果要更新具有相同属性的集合的所有对象,则需要使用update\u all
。那么,假设phone
是一个特定的phone对象。那么你会想要:
phone.baskets.where(用户id:1)。全部更新(名称:“abc”)
update
方法设计用于更新单个对象的属性,或使用单独的属性哈希数组更新多个对象的数组:它会给您带来什么样的错误?
Basket.find_by(user_id: 1, basket_id: 1).update(name: 'abc')