dbっていえば、
from statuses join accounts on statuses.account_id = account.id
ってonで書くものだってずっと思ってたんだけど、
primaryキーを全部idじゃなくて、それぞれstatus_idとかaccount_idにする設計にしておけば、
from statuses join accounts using(account_id)
で済んじゃうんだね、って最近知ったのよ。便利ね。
dbっていえば、
from statuses join accounts on statuses.account_id = account.id
ってonで書くものだってずっと思ってたんだけど、
primaryキーを全部idじゃなくて、それぞれstatus_idとかaccount_idにする設計にしておけば、
from statuses join accounts using(account_id)
で済んじゃうんだね、って最近知ったのよ。便利ね。
@noellabo こん!のえるさん🐰🐰
素敵な木曜日を✨️✨️
🐰
@risahana こん! 🐰 🐰
もう木曜日なんだねえ
こうかな。
class CreateStatus < ActiveRecord::Migration[7.1]
def change
create_table :statuses, id: false do |t|
t.integer :status_id, null: false, primary_key: true
t.timestamps
end
add_foreign_key :statuses, :accounts, column: :account_id , primary_key: :account_id, on_delete: :cascade
end
end
class CreateAccount < ActiveRecord::Migration[7.1]
def change
create_table :accounts, id: false do |t|
t.integer :account_id, null: false, primary_key: true
t.timestamps
end
end
end
で、こう。
class Status < ApplicationRecord
self.primary_key = :status_id
end
class Account < ApplicationRecord
self.primary_key = :account_id
end
あ、Statusに t.references :account, null: false かいてないや。……まあそういう感じで。
class Status < ApplicationRecord
self.primary_key = :status_id
belongs_to :account, primary_key: :account_id
end
こっちはこうか。
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.