我一直在争论这个,我想创建一个LEFT加入条件,所以我有一个优惠券模型,用户可以创建优惠券,但是当他们被分配时,他们可能会或可能不会被分配到工作他们被认为是执行。我在优惠券模型上将此设置设为has_one :job
并带有add_reference :jobs, :coupon, 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 Coupon < ActiveRecord::Base
has_one :job
end
class Job < ActiveRecord::Base
belongs_to :coupon
end
答案 0 :(得分:0)
首先我要说的是,你目前所拥有的并没有什么问题,而且实际上你的问题并不清楚。
我实际上会以相反的方式对此进行建模,job_id
表上有coupons
,即:
add_reference :coupons, :job, index:true
和...
class Coupon < ActiveRecord:Base
belongs_to :job
end
最大的优势在于,如果job_id
是NULL
,那么你可以知道你的优惠券是否被执行,如果jobs
是coupon_id
那么它没有被执行 - 而你现在如何拥有它您需要在executed?
表上实际执行SELECT,以确定是否有记录def executed?
job_id.present?
end
您的$(document).ready( function() {
$("#citybox").hide();
$("#statebox").hide();
$('input#zip').bind("change keyup input",function() {
var zip_in = $(this);
var zip_box = $('#zipbox');
if (zip_in.val().length<5)
{
zip_box.removeClass('has-error has-success');
}
else if ( zip_in.val().length>5)
{
zip_box.addClass('has-error').removeClass('has-success');
}
else if ((zip_in.val().length == 5) )
{
var urls =["https://api.zippopotam.us/us/" ,"https://api.zippopotam.us/pr/","https://api.zippopotam.us/vi/"];
$.each(urls, function(i,u){
$.ajax(u + zip_in.val(),{
cache: false,
dataType: 'json',
type: 'GET',
success: function(result, success) {
// Make the city and state boxes visible
$('#citybox').slideDown();
$('#statebox').slideDown();
// US Zip Code Records Officially Map to only 1 Primary Location for abbreviation
places = result['places'][0];
$('#city').val(places['place name']);
$('#state').val(places['state']);
zip_box.addClass('has-success').removeClass('has-error');
},
error: function(result, success) {
zip_box.removeClass('has-success').addClass('has-error');
}
});
});
}
});
});
方法会变成:
{{1}}