Направляющие - Как создать модель, связанную с ДВУМЯ из другой модели

Я создал Chrome Api для Safari и Firefox. Я преобразовал довольно большое расширение для Safari и Firefox, используя эти API-интерфейсы перевода. Я видел, что многие люди спрашивают о возможностях преобразования расширений между браузерами, и я надеюсь, что кто-то может помочь мне дополнить API несколькими методами и исполнителем задач для автоматизации преобразования. В настоящее время немного ручной работы.

https://github.com/kritollm/chrome-extension-api-for-safari-and-firefox

После того, как я впервые написал этот пост, я узнал о два других проекта, которые очень похожи.

https://code.google.com/p/adblockforchrome/source/browse/trunk/port.js и

https://github.com/ Jetpack-лаборатории / хром специально Jetpack

11
задан cakeforcerberus 25 December 2012 в 04:57
поделиться

2 ответа

Скорее всего, вам понадобятся две модели, структурированные следующим образом:

class User < ActiveRecord::Base
  has_many :friendships
  has_many :friends, :through => :friendships #...
end

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id'
end 

# ...and hence something like this in your view
<% for friendship in @user.friendships %>
  <%= friendship.status %>
  <%= friendship.friend.firstname %>
<% end %>

(Этот шаблон взят из сообщения, сделанного Райаном Бейтсом около двух лет назад во время этого обсуждение на RailsForum .)


Просто примечание: теперь это довольно старая версия. Вы можете рассмотреть возможность оценки других стратегий для решения этой проблемы в современном контексте Rails.

15
ответ дан 3 December 2019 в 07:39
поделиться

Вы можете создать модель соединения, которая устанавливает связь между связью между двумя моделями пользователей

, поэтому в основном


class User

  has_many :links, :through => :relationships

end

class Relationship

  belongs_to :user_id_1, :class=> "User"
  belongs_to :user_id_2, :class=> "User"

end

1
ответ дан 3 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: