Rails の別のモデル内からモデル データをクエリする方法については、完全には明確ではありません。モデルには、has_many と belongs_to の関係があります。2 つのモデルは「Gear」と「line_item」です。Gear has_many line_items とLineItem belongs_to Gear。
私がやろうとしているのは、NULL または空白の cart_id (これはフィールドの 1 つです) を持つ Gear オブジェクトに属するデータベース内のすべての line_items をクエリし、その可用性を計算することです。この場合、ギアは line_item (start_date、end_date、start_hour、end_hour) に保存されている特定の日時に貸し出されるため、Ruby で高度なクエリをあまり実行していないので、Google で検索しましたが、今はわかりません。どのように使用すればよいか
次のようなギア モデルで列挙可能:
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 #