Ruby on rails rails 4模型关联左连接验证id
我已经为此奋斗了一段时间,我想创建一个左连接条件,所以我有一个优惠券模型,用户可以创建优惠券,但他们可能被分配到一个作业,也可能没有,当他们被分配到一个作业时,他们被认为是执行的。我在优惠券模型上设置了Ruby on rails rails 4模型关联左连接验证id,ruby-on-rails,ruby,model-view-controller,activerecord,Ruby On Rails,Ruby,Model View Controller,Activerecord,我已经为此奋斗了一段时间,我想创建一个左连接条件,所以我有一个优惠券模型,用户可以创建优惠券,但他们可能被分配到一个作业,也可能没有,当他们被分配到一个作业时,他们被认为是执行的。我在优惠券模型上设置了has_one:job,带有添加参考:jobs,:优惠券,index:true索引,但这似乎有问题。我想我的大脑今天被炸了…如果使用优惠券,我会理想地确认它被分配到了有效的工作,这就是为什么我在使用索引 class CreateCoupons < ActiveRecord::Migratio
has_one:job
,带有添加参考:jobs,:优惠券,index:true
索引,但这似乎有问题。我想我的大脑今天被炸了…如果使用优惠券,我会理想地确认它被分配到了有效的工作,这就是为什么我在使用索引
class CreateCoupons < ActiveRecord::Migration
def change
create_table :coupons do |t|
t.string :code, limit: 250, null: false
t.datetime :start_at, null: false
t.datetime :end_at, null: false
t.datetime :executed_at
t.datetime :deleted_at
t.timestamps null: false
end
add_reference :jobs, :coupon, index: true
add_index :coupons, :deleted_at
add_index :coupons, :code, unique: true
end
end
class CreateJobs < ActiveRecord::Migration
def change
create_table :jobs do |t|
t.string :title, limit: 50, null: false
t.string :slug, limit: 250, null: false
t.string :location, limit: 100, null: false
t.string :short_description, limit: 250, null: false
t.text :description, null: false
t.text :application_process, null: false
t.boolean :is_featured, default: false
t.datetime :start_at
t.datetime :end_at
t.timestamps null: false
end
add_index :jobs, :slug
end
end
class-createCouples
还有模型课
class Coupon < ActiveRecord::Base
has_one :job
end
class Job < ActiveRecord::Base
belongs_to :coupon
end
class优惠券
首先,我要说的是,您目前所拥有的并没有什么问题,您的问题究竟是什么还不清楚
实际上,我会以另一种方式对此进行建模,在优惠券
表上显示工作id
,即:
add_reference :coupons, :job, index:true
而且
class Coupon < ActiveRecord:Base
belongs_to :job
end
你有,我想我现在正在测试这个,但是,你会把has_one移动到jobs模型还是完全停止?是的,可能会移动到那里,即使只是为了记录意图。我想我发现了另一个竞赛条件,如果添加了在日期执行,则应验证作业id是否存在。我想我发现它验证了:job的存在,除非::executed_at?问题不清楚。例如,您是否有任何理由在标题中提到LEFT JOIN?您想验证什么?@Meier发布的答案更清楚,我正在尝试验证优惠券何时创建,稍后确保它被分配到有效的工作id。我对下面发布的答案的后续思考?
def executed?
job_id.present?
end