1

トランザクションは他のいくつかのモデルから発生する可能性があるため、ポリモーフィックな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 エラーが発生します。PersonTransactionfrom_personTransaction

ActiveRecord::StatementInvalid: SQLite3::SQLException: そのような列はありません: from_owner_type: SELECT "people".* FROM "people" WHERE "people"."id" = 1 AND (from_owner_type = 'Person') LIMIT 1

私が望むのは、from_personon がそうでない場合に戻り、そうでない場合は関連するTransactionを返すことです。これを行うカスタムメソッドを設定することはできましたが、 . これを CanCan 条件で使用したいと考えています。Rails3を使用しています。nilTransaction from_owner_typePersonPersonfrom_personbelongs_to

4

1 に答える 1