При попытке обновить значение read_at от модели сообщений он не имеет такой эффект с помощью update_attributes функции.рельсы update_attributes не обновляет значение
Вот таблица сообщений
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.integer :sender_id, null: false
t.integer :receiver_id
t.string :subject
t.text :body
t.datetime :read_at
t.string :container, default: "draft"
t.boolean :sender_deleted, default: false
t.boolean :receiver_deleted, default: false
t.timestamps
end
end
def down
drop_table :messages
end
end
Вот сообщение Модель
class Message < ActiveRecord::Base
attr_accessible :subject, :body, :container, :sender_id, :receiver_id, :read_at
belongs_to :sender,
class_name: 'User'
belongs_to :receiver,
class_name: 'User'
Вот Пользователь Модель
class User < ActiveRecord::Base
has_many :messages_sent,
class_name: 'Message',
foreign_key: 'sender_id',
dependent: :destroy
has_many :messages_received,
class_name: 'Message',
foreign_key: 'receiver_id',
dependent: :destroy
Затем в терминале
user1 = User.create(name: "user1_name", email: "[email protected]", password: "foobar", password_confirmation: "foobar")
user2 = User.create(name: "user2_name", email: "[email protected]", password: "foobar", password_confirmation: "foobar")
msg1 = Message.create(sender_id: user1.id, receiver_id: user2.id, subject: 'subject_msg1', body: 'body_msg1')
msg1.save
@m = Message.find(msg1.id)
@m.update_attributes(read_at: Time.now)
Я получаю это выводит:
@m.read_at
=>datestamped
msg1.read_at
=>nil
Наверняка я что-то здесь отсутствует, но я не могу видеть, где после изменения и rechanging в has_many и belongs_to от ассоциаций, потому что я положил read_at по attr_accessible ПОМОЩЬ!
Несмотря на ** @ m ** и ** msg1 **, имеющие одинаковые ** id **, используя '@ m.update_attributes (read_at: Time.now)' будет обновлять ** read_at * * атрибут от ** @ m ** только. После выполнения 'msg1.reload' он обновит значение ** msg1.read_at **. Я не понимаю, почему?Над моей моделью сообщения, создающей функцию для обновления attr, не работает, если я не использую ** reload ** в сообщении, которое оно само. Можете ли вы объяснить, почему? Я работаю над другими attr, только на этом он не обновляет его самостоятельно – fejao