gpt4 book ai didi

ruby-on-rails-3 - 多对多关系的事件记录查询

转载 作者:行者123 更新时间:2023-12-03 16:00:02 24 4
gpt4 key购买 nike

我有一个名为 Event 的模型和另一个名为 Product 的模型。一个事件有很多产品,一个产品有很多事件(通过名为 Eventproduct 的连接模型)。我正在尝试设计一个查询,该查询将选择当前日期范围不与另一个事件匹配的任何事件中的所有产品,因此当用户创建具有日期范围的事件时,它将显示可用的产品,以便同一产品不能同时出现在 2 个事件中。这是否可以通过事件记录查询界面实现,或者我是否需要编写自己的特定 SQL 查询。

我的迁移看起来像:

class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
t.string :make
t.string :model
t.integer :wattage
t.boolean :dmx
t.decimal :price
t.timestamps
end
end
end


class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.datetime :start_date
t.datetime :end_date
t.timestamps
end
end
end


class AddContactToEvent < ActiveRecord::Migration
def change
add_column :events, :name, :string
add_column :events, :location, :string
add_column :events, :contact_number, :string
end
end

class CreateEventproducts < ActiveRecord::Migration
def change
create_table :eventproducts do |t|
t.references :product
t.references :event

t.timestamps
end
add_index :eventproducts, :product_id
add_index :eventproducts, :event_id
end
end

以下是相关模型:
class Event < ActiveRecord::Base
attr_accessible :end_date, :start_date, :products, :lightings, :name, :location, :contact_number, :product_ids
has_many :products, :through => :Eventproduct
has_many :Eventproduct
validates_presence_of :name, :message => "can't be blank"
validates_presence_of :location, :message => "can't be blank"
validates_presence_of :contact_number, :message => "A telephone number is needed so that we can contact you if we have any problems"
validates_presence_of :start_date, :message => "can't be blank"
validates_presence_of :end_date, :message => "can't be blank"
end

class Eventproduct < ActiveRecord::Base
belongs_to :product
belongs_to :event
# attr_accessible :title, :body
end


class Product < ActiveRecord::Base
validates :price, numericality: {greater_than_or_equal_to: 0.01}
attr_accessible :make, :model, :wattage, :dmx, :price
end

最佳答案

试试这个:Product.includes(:Eventproduct).where(eventproducts: { event_id: nil }).group('products.id') .

备注 那是里面的表名where健康)状况。另外不要忘记将 Eventproduct 的关联添加到您的产品模型中:has_many :Eventproduct

关于ruby-on-rails-3 - 多对多关系的事件记录查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com