我在创建occupied
期间尝试将runn
的{{1}}字段更新为true
。
stay
这是我def create
if params[:id].present?
@patient = Patient.find(params[:id])
@stay = @patient.stays.build(stay_params)
@stay.is_current = true
Runn.find_by_id(@stay.runn_id).update_attribute(:occupied, true)
else
@stay = Stays.new(stay_params)
end
if @stay.save
redirect_to @patient
end
end
stays_controller.rb
这是class Stay < ActiveRecord::Base
belongs_to :patient
has_one :runn
has_many :feeding_events
has_many :ud_events
has_many :misc_stay_events
after_create :update
private
def update
self.check_in_dt = Time.new
self.is_current = true
end
end
stay.rb
这是runn.rb
当我使用控制台显示所有内容时,它们都显示class Runn < ActiveRecord::Base
belongs_to :ward
belongs_to :stay
end
是假的,这是有道理的,因为我是如何在种子中设置它的。但是,我想知道如何更新occupied
?当我这样做时:
occupied
[1] pry(main)> Runn.find_by_id(1)
Runn Load (0.5ms) SELECT "runns".* FROM "runns" WHERE "runns"."id" = $1 LIMIT 1 [["id", 1]]
=> #<Runn:0x007f478460d6c8
id: 1,
ident: "Run 0.0",
size: "Medium,",
amenities: nil,
created_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
updated_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
ward_id: 1,
occupied: false>
[2] pry(main)> Runn.find_by_id(1).occupied = true
Runn Load (0.6ms) SELECT "runns".* FROM "runns" WHERE "runns"."id" = $1 LIMIT 1 [["id", 1]]
=> true
[3] pry(main)> Runn.find_by_id(1)
Runn Load (0.5ms) SELECT "runns".* FROM "runns" WHERE "runns"."id" = $1 LIMIT 1 [["id", 1]]
=> #<Runn:0x007f478467a6b0
id: 1,
ident: "Run 0.0",
size: "Medium,",
amenities: nil,
created_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
updated_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
ward_id: 1,
occupied: false>
[4] pry(main)>
尚未更新。但是,使用occupied
:
update_attribute
它已成功更新,但已从Runn.all中删除。有什么建议吗?
编辑:
[4] pry(main)> Runn.find_by_id(1).update_attribute(:occupied, true)
Runn Load (0.4ms) SELECT "runns".* FROM "runns" WHERE "runns"."id" = $1 LIMIT 1 [["id", 1]]
(0.2ms) BEGIN
SQL (0.4ms) UPDATE "runns" SET "occupied" = $1, "updated_at" = $2 WHERE "runns"."id" = $3 [["occupied", "t"], ["updated_at", "2015-12-03 05:52:33.949456"], ["id", 1]]
(11.0ms) COMMIT
=> true
[5] pry(main)> Runn.find_by_id(1)
Runn Load (0.5ms) SELECT "runns".* FROM "runns" WHERE "runns"."id" = $1 LIMIT 1 [["id", 1]]
=> #<Runn:0x007f479d0fd098
id: 1,
ident: "Run 0.0",
size: "Medium,",
amenities: nil,
created_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
updated_at: Thu, 03 Dec 2015 05:52:33 UTC +00:00,
ward_id: 1,
occupied: true>
[6] pry(main)> Runn.all
Runn Load (0.6ms) SELECT "runns".* FROM "runns"
=> [#<Runn:0x007f479d0aafa0
id: 2,
ident: "Run 0.1",
size: "Small,",
amenities: nil,
created_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
updated_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
ward_id: 1,
occupied: false>,
#<Runn:0x007f479d0aae60
id: 3,
ident: "Run 1.0",
size: "Small,",
amenities: nil,
created_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
updated_at: Thu, 03 Dec 2015 05:50:01 UTC +00:00,
ward_id: 2,
occupied: false>,
#<Runn:0x007f479d0aad20
id: 4,
ident: "Run 1.1",
size: "Medium,",
amenities: nil,
原来的Runn.all。
答案 0 :(得分:0)
请尝试更新:
runn = Runn.find_by_id(1)
if !runn.nil?
runn.occupied = true
runn.save
end