0

我有三个型号在这一问题的背景:怎样写活动记录查询

class ClearanceBatch < ActiveRecord::Base  
    has_many :items 
    belongs_to :user 
end 

class Item < ActiveRecord::Base 

    belongs_to :style 
    belongs_to :user 
    belongs_to :clearance_batch 
    validates :id, :uniqueness => true 
end 

class User < ActiveRecord::Base 

    has_many :items, dependent: :destroy 
    has_many :clearance_batches, dependent: :destroy  
    enum role: {staff: 0, vendor: 1, admin: 2}   

end 

模式:

create_table "clearance_batches", force: :cascade do |t| 
     t.datetime "created_at" 
     t.datetime "updated_at" 
     t.boolean "status",  default: false 
     t.string "boughtby", default: "" 
     t.integer "user_id" 
     end 

     add_index "clearance_batches", ["user_id"], name: "index_clearance_batches_on_user_id" 

     create_table "items", force: :cascade do |t| 
     t.string "size" 
     t.string "color" 
     t.string "status" 
     t.decimal "price_sold" 
     t.datetime "sold_at" 
     t.integer "style_id" 
     t.datetime "created_at" 
     t.datetime "updated_at" 
     t.integer "clearance_batch_id" 
     t.integer "user_id" 
     end 



create_table "users", force: :cascade do |t| 
     t.string "email",     default: "", null: false 
     t.string "encrypted_password",  default: "", null: false 
     t.string "reset_password_token" 
     t.datetime "reset_password_sent_at" 
     t.datetime "remember_created_at" 
     t.integer "sign_in_count",   default: 0, null: false 
     t.datetime "current_sign_in_at" 
     t.datetime "last_sign_in_at" 
     t.string "current_sign_in_ip" 
     t.string "last_sign_in_ip" 
     t.datetime "created_at",       null: false 
     t.datetime "updated_at",       null: false 
     t.integer "role",     default: 0 
     end 

我想找到一个批次的当前登录的所有项目用户(主要是供应商)的状态“清除”,并获得他们的详细信息从控制器到我的观点循环

任何人都可以请帮助我与积极的记录查询吗?请! :)

SQLite的查询,我认为应该是:

Select I.id from clearance_batches C INNER JOINS Items I on C.id = I.clearance_batch_id where C.user_id = "1" and I.status = "clearanced" 

(如果1是当前用户,牢记我只是让角色的厂商用户在clearance_batch表用户)

回答

0

(1)查询:

Items.where(status: "clearanced") 
    .joins(:clearance_batches) 
    .where(clearance_batches: {user_id: current_user}) 

(2)控制器:

@clearanced_items = query(1) 

(3)查看:

<% @clearanced_items.each do |c_item| %> 
    ... 
<% end %>