私はRubyonRails/ActiveAdminアプリケーションで作業しています。私のRoRバージョンは4.2.5、AAバージョンは1.0.0です。私はモデルMessage
を次のように持っています。Ruby on Railsのモデルに仮想属性を追加するには?
class Message < ActiveRecord::Base
belongs_to :user
validates :user, :content, presence: true
def palindrome
# return true/false
end
end
見ての通り、私はメッセージのみのcontent
に依存し、読み取り専用属性palindrome
を持っていると思います。この属性を通常の属性とまったく同じように扱いたい。通常は、rails console
でメッセージを取得するか、json
形式のメッセージをリクエストすると、リストにpalindrome
という属性が表示されます。私はまた、この属性によってメッセージ用のフィルターを持っていたいと思います。
私はこれをどのように達成できるかわかりません。お使いのモデルで
まあし、ありがとうございました。私には2つの質問があります。まず、別の属性の値にしか依存しないため、この属性を書き込み可能にしたくありません。第二に、 'self [:palindrome]'と評価するのは何ですか? – moorara
属性値を記述する必要がない場合は、setterメソッドを使用せず、強力なparam定義でホワイトリストを作成します。 'self [:palindrome]'はあなたのモデルオブジェクトのインスタンスである 'self'のpalindromeの値を与えます。これは 'model_instance.palindrome'と似ています。今はっきりしたいと思っています。他の質問がある場合はお知らせください。 –
これはparamsリストに表示されますか? –