0
我正在製作一個玩具應用程序來學習Rails 4(不需要克隆教程)。在Rails 4中正確地模擬貨幣交易
用戶註冊(我使用Devise gem來照顧用戶認證),並生成BTC pub/prv密鑰對,並且計算地址並將其顯示給用戶(在閃光消息中),所以他們可以將他們的帳戶關閉。其他用戶註冊,任何人都可以搜索任何人,並且每個用戶都可以動態填充下拉列表,但是當用戶鍵入他們的朋友/助理的姓名(無論他們想向誰發送比特幣)時,都會過濾名稱。目前我只使用testnet作爲這個想法,沒有真正的BTC(別擔心!)。
不管怎麼說,這是我爲這個應用程序建模思路:
class User < ActiveRecord::Base
has_many :account
end
class Tx < ActiveRecord::Base
has_one :receiver, class => "account"
belongs_to :user, through :account
end
class Account < ActiveRecord::Base
belongs_to :user
has_many :tx
end
爲什麼我不喜歡上面的原因是因爲在我的腦海裏,似乎一個德克薩斯(簡稱交易,因爲交易是在Rails的保留字)實際上屬於兩個用戶,但我的讀數似乎表明,我不能有這樣的事情:
class User < ActiveRecord::Base
has_many :tx
end
class Tx < ActiveRecord::Base
has_one :receiver, class => "user"
has_one :sender, class => "user
end
哪個這些實現的更好?我很欣賞這種模式的任何見解。
直到現在纔看到這篇文章!我很欣賞這個建議。當我運行rails生成腳手架時,我應該指定「數量:整數sender_id:整數receiver_id:整數」?我知道模型會自動獲得指定的id,這意味着只有'quantity:integer'需要成爲rails g scaffold命令的一部分嗎?對我來說這沒有意義,因爲交易中的兩個參與者必須是數據庫中的列,但是我不知道這是否通過在Transfer模型中具有關聯來隱式處理。在此先感謝 – 2014-09-07 04:14:26
不用擔心!正確的,您的導軌生成支架需要包含外鍵,否則關聯將失敗。 (至少,根據我的經驗,這樣做更容易) – 2014-09-07 16:13:38