私のアプリケーションでは、ユーザーと偽の投稿があります。私が望むもの:各ユーザに対して、偽の投稿はランダムな順序で表示されるべきですが、偽の投稿に関連付けられた(偽の)タイムスタンプは年代順であるべきです。それをより明確にするには:今、私は次のことをやりたいRails:レコード(ユーザーなど)を作成した後、別のテーブル(ユーザーテーブルではない)を更新しますか?
# fakepost.rb
class Fakepost < ApplicationRecord
has_many :randomized
end
# user.rb
class User < ApplicationRecord
has_many :randomized
end
# randomized.rb
class Randomized < ApplicationRecord
belongs_to :user
belongs_to :fakepost
end
:私のモデルは次のようになり
fakepost_id | user_id | fake_timestamp
:
User A sees:
- Post 1 created at 15.12.2016 - 14:00
- Post 2 created at 15.12.2016 - 13:00
- Post 3 created at 14.12.2016 - 23:00
User B sees:
- Post 3 created at 15.12.2016 - 14:00
- Post 1 created at 15.12.2016 - 13:00
- Post 2 created at 14.12.2016 - 23:00
私はそれらの列を持つ新しいテーブルを作成しました(私はそれを実装する方法がわからないので、私は擬似コードしか持っていません:(...)
-
fakepost_id、新しく作成されたユーザのUSER_ID、およびランダムな時間で:新しいユーザーが作成され
- ...
- は、各fakepostための新しいテーブルに...
- 書き込みをすべてfakepostsを取得し、過去。
私はuser.rbモデルでは、私はafter_createコールバックを定義することができることを知っているが、(ないどのように私は私のユーザモデル内のすべてのfakepostsを得るのですか(それらが関連付けられていない)とどのように私は別のテーブルに書き込みますかusersテーブル)?またはrandomize.rbモデルを作成する必要がありますか?
私は実際にあなたの第二の答えは完全に働いたので、私のUserモデルのための工夫を使用してください! (そして、私はあなたのソリューションがいかに簡単できれいであるかに驚いています。私はさまざまな "after_save"、 "after_create"などのコールバックを試しています)。ありがとうございました! – OhDaeSu