has_many通过-Notes发送者和接收者

时间:2018-07-20 11:45:41

标签: ruby-on-rails activerecord associations

我正在开发具有三个模型的Rails应用。

$obj_reclamation

如何创建它们之间的关联,这样我就可以得到

  • 由用户A共享的笔记。
  • 用户A收到的笔记。
  • 由用户A创建的注释。

2 个答案:

答案 0 :(得分:0)

在用户模型中,您可以这样做:

has_many :shares, foreign_key: 'user_id', class_name: 'Share', dependent: :destroy has_many :receives, foreign_key: 'receiver_id', class_name: 'Share', dependent: :destroy

您可以这样拨打电话:

User.first.shares.each {|share| share.note}

这将获得具有第一个用户ID的所有共享及其所有笔记。 对于接收者:

User.first.receives.each {|share| share.note}

在共享模型中,您还可以指定相反的连接,如下所示:

belongs_to :sender, foreign_key: 'user_id', class_name: 'User'

belongs_to :receiver, foreign_key: 'receiver_id', class_name: 'User'

与此您可以致电:

Share.first.receiver,这将使您成为收到该帖子的用户

对于用户创建的笔记,您可以调用:

User.first.notes

您可能想删除这些从属以便进入您的项目。 希望对您有帮助

答案 1 :(得分:0)

@Mehmet Adilİstikbal提供了部分答案,所以我将尝试完成它。

这是仅使用关联的另一种方式:

<script> <!-- not the same as above -->
    var x = prompt("Choose a password: ");
</script>

如果您选择@Mehmet Adilİstikbal答案,请确保进行转换 xx(而不是每个使用地图)

我的答案使用has_many通过关联,它使您可以“通过”联接表。

相关问题