Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails 4模型关联左连接验证id_Ruby On Rails_Ruby_Model View Controller_Activerecord - Fatal编程技术网

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