我并不完全清楚如何从 Rails 中的不同模型中查询模型数据。这些模型具有 has_many 和 belongs_to 关系。2 个模型是“Gear”和“line_item”。Gear has_many line_items 和LineItem belongs_to Gear。
我正在尝试做的是查询数据库中属于具有 NULL 或空白 cart_id (这是字段之一)的 Gear 对象的所有 line_items,然后计算它的可用性。因为在这种情况下,Gear 在存储在 line_item (start_date, end_date, start_hour, end_hour) 中的特定日期和时间租出......我没有在 Ruby 中进行大量高级查询,现在我没有确定我应该如何使用
在齿轮模型中可枚举,如下所示:
line_items.inject(0) {|line_item| line_item.where('line_items.cart_id' => NULL }
或者,如果我可以像这样在齿轮模型中使用范围:
scope :availablegear, lambda { includes(:line_items).where('line_items.cart_id' => nil) }
我知道两者的语法可能都不正确,所以我可以使用一些指导来说明使用什么以及如何使用它。
谢谢。
我的项目正在使用 Rails 3.2.0、Ruby 1.9.4 和 MySQL
用建议的答案编辑
class Gear < ActiveRecord::Base
attr_accessible :title, :size, :price, :sub_category_id, :user_id, :image, :image_a, :image_b, :image_c, :image_d, :image_e, :image_f, :image_g, :image_h, :image_i, :remote_image_url, :color, :year, :latefee, :cancellation, :minrental, :policy, :about, :address, :city, :state, :zip, :country, :latitude, :longitude, :gmaps
...some code omitted for brevity
has_many :line_items
scope :availablegear, joins(:line_items).where(:line_items => {:cart_id => nil})
...some code omitted for brevity
end
现在,当我启动 Rails 控制台并执行 ag = Gear.find(4) 然后执行 g.availablegear 时,出现以下错误:NoMethodError: undefined method `availablegear' for #