トランザクションは他のいくつかのモデルから発生する可能性があるため、ポリモーフィックなTransaction
モデルがあります。from_owner
class Transaction < ActiveRecord::Base
belongs_to :from_owner, polymorphic: true
end
belongs_to
特定の値がいつであるかを設定しようとしていfrom_owner_type
ます:
belongs_to :from_person,
conditions: ['from_owner_type = ?', Person.name],
class_name: Person,
foreign_key: 'from_owner_id'
私が直面している問題は、が forではなくであるconditions
ように見えることです。したがって、次の SQL エラーが発生します。Person
Transaction
from_person
Transaction
ActiveRecord::StatementInvalid: SQLite3::SQLException: そのような列はありません: from_owner_type: SELECT "people".* FROM "people" WHERE "people"."id" = 1 AND (from_owner_type = 'Person') LIMIT 1
私が望むのは、from_person
on がそうでない場合に戻り、そうでない場合は関連するTransaction
を返すことです。これを行うカスタムメソッドを設定することはできましたが、 . これを CanCan 条件で使用したいと考えています。Rails3を使用しています。nil
Transaction
from_owner_type
Person
Person
from_person
belongs_to