Ruby on rails 模型中的条件问题
我正在制作个人理财应用程序。我有两个模型:Ruby on rails 模型中的条件问题,ruby-on-rails,ruby-on-rails-3,postgresql,pg,Ruby On Rails,Ruby On Rails 3,Postgresql,Pg,我正在制作个人理财应用程序。我有两个模型:账户和交易。 交易有属于:账户和账户有有多个:交易 当我在db(postgres)中有account\u id列时,一切正常。但是我必须将account\u id重命名为from\u account\u id并将另一列添加到\u account\u id。这样我就可以在账户中添加支出,在账户中添加收入。此外,账户之间的转账也是必要的(从账户id到账户id的和都有一些值) 因此,我将视图中的字段:account\u id重命名为:from\u accoun
账户
和交易
。
交易
有属于:账户
和账户
有有多个:交易
当我在db(postgres)中有account\u id
列时,一切正常。但是我必须将account\u id
重命名为from\u account\u id
并将另一列添加到\u account\u id
。这样我就可以在账户
中添加支出,在账户
中添加收入。此外,账户之间的转账也是必要的(从账户id到账户id的和都有一些值)
因此,我将视图中的字段:account\u id
重命名为:from\u account\u id
,并将:添加到\u account\u id
字段。但是,当我在db中将account\u id
重命名为from\u account\u id
时,出现了这个错误
ActiveRecord::StatementInvalid in PagesController#index
PG::Error: ERROR: column transactions.account_id does not exist
LINE 1: ...s".* FROM "transactions" INNER JOIN "accounts" ON "transacti...
^
: SELECT "transactions".* FROM "transactions" INNER JOIN "accounts" ON
"transactions"."account_id" = "accounts"."id" WHERE "accounts"."user_id" = 17 ORDER BY
transactions.date DESC
我的页面#索引
控制器是:
class PagesController < ApplicationController
def index
if user_signed_in?
@accounts = current_user.accounts.all
@transaction = current_user.transactions.build
@transactions = current_user.transactions.all
@categories = current_user.categories.all
end
end
end
class PagesController
我认为Rails正试图在交易
表中查找账户id
列,因为交易
属于:账户
。但是我需要:account
to
和from
的两个列,如您所见。所以,也许我需要在交易
模型中将这个属于
条件,但我不知道如何更改
谢谢你的建议 您必须重命名账户中的关系。类似于以下的方法将起作用:
有多个:事务,:foreign\u key=>“from\u account\u id”
您必须在事务
类中定义两个属于
的关系,表事务
中的每列一个:
class Transaction < ActiveRecord::Base
belongs_to :from_account, :class_name => 'Account', :foreign_key => 'from_account_id'
belongs_to :to_account, :class_name => 'Account', :foreign_key => 'to_account_id'
# ...
end
类事务'account',:foreign\u key=>'from\u account\u id'
属于\u to:to\u account,:class\u name=>'account',:foreign\u key=>'to\u account\u id'
# ...
结束
请参见中的选项