以下は私を困惑させる問題です:
モデル Word があり、article_count 属性があります
ただし、使用する場合:
w = Word.first
w.article_count = 1
w.save
最初の単語の article_count は変更されません。ログには次のように表示されます。
Word Exists (0.4ms) ...
しかし、私は使用できます
w.update_attributes :article_count => 1
保存の機能を誤解しているのかもしれませんが、誰か説明してもらえますか?
======================= アップデート ======================
これが私の記事モデルです:
class Article < ActiveRecord::Base
attr_accessible :content, :title, :source, :url
has_many :article_wordships, :dependent => :destroy
has_many :words, :through => :article_wordships
has_many :paragraphs, :dependent => :destroy
alias_attribute :word_count, :article_wordships_count
validates_uniqueness_of :title
end
これが私のコードです:
Article.select(:title).all.each do |a|
a.title = a.title.gsub(/\A.+?;\s(.+)/, '\1')
a.save
end
そして、コードを実行した後、記事は何も変わりません。
コンソール情報は次のとおりです。
1.9.3p194 :003 > a.save
(0.2ms) BEGIN
Article Exists (0.6ms) SELECT 1 AS one FROM `articles` WHERE (`articles`.`title` = BINARY 'A Shared State of Defeat' AND `articles`.`id` != 178) LIMIT 1
(0.9ms) UPDATE `articles` SET `title` = 'A Shared State of Defeat', `updated_at` = '2012-09-08 02:58:33' WHERE `articles`.`id` = 178
(2.2ms) COMMIT
=> true
保存も保存も!true を返します。
不思議なことに、うまくいくときもあれば、うまくいかないときもあります。
私は怒っている...