将用户连接到rails中的数据库条目

时间:2013-01-04 06:08:34

标签: mysql ruby-on-rails ruby database

我希望有人可以在我的申请中帮助我。

这是我在的地方。我有一般用户角色为“所有者”,我有寻求者角色为“求职者”。现在,“所有者”创建了一个帖子,而“寻求者”接受了它。

我希望在Rails中有经验的人可以建议采取以下最佳途径和结构;

1。)创建帖子时,将“所有者”连接到数据库中的帖子

2。)将“求职者”连接到他们接受的帖子。

因此,如果“owner1”创建了10个帖子,那么他应该链接到其中10个帖子而不是其他帖子。现在,“seeker1”让我们说,看看所有10个帖子,但只喜欢其中的5个并点击按钮接受他选择的5个帖子。

我不确定如何让Rails自动连接所有内容,任何建议都会有所帮助。还没有在Stackoverflow上找到类似的东西。


只是想改写我的初始设置和功能。

在我的申请表中,我有;

  • 具有角色的用户可以创建职位描述帖子。他可以编辑,删除或标记完成。

  • 我也有搜索者,他们浏览用户创建的所有帖子。求职者,如果他们喜欢这个职位的帖子和描述,他们想做那个工作,他们点击一个按钮“抓住它”

所以我想创建的函数是;

1。)将用户绑定到他们的帖子。现在,任何用户都可以创建帖子并查看所有帖子。我希望他们在某种观点中只看到他们创造的帖子,而不是其他人。

2。)我还希望“求职者”能够将自己与数据库绑定到他们想要使用的工作岗位。

现在从我对事物的全面了解,以及它的新手。我猜我需要更新数据库并创建2个新表。 1 x所有者和1 for Seekers。

我遇到困难的地方在控制器上,如何在用户提交带有帖子详细信息的表单并将其绑定到该DB对象后进行“def new”运行。

如上所述,第二步是使用“def grabit”在寻求者点击“抓住它”按钮时运行,并将寻求者绑定到该帖子。

所以最后如果我运行@job = Joblisting.find(1),我会把数据库表吐出来,列'user'显示创建这个帖子的用户和表'seeker'的名字寻求者正在努力。如果没有寻求者,那当然就是零。

嗯..只是考虑一下,会通过电子邮件地址来识别人员是否正常和可暗示,或者您是否建议为每个已注册用户提供某种身份证明。

对此的任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

每个帖子都有一个所有者,这样就形成了一个简单的一对多关系,其中用户拥有多个帖子,一个帖子属于一个用户。一个喜欢的帖子可以有许多“寻求者”,虽然看起来和用户可以“寻找”许多帖子。这样就形成了HABTM关系。这看起来像这样:

class User < ActiveRecord::Base 
  has_many :posts
  has_and_belongs_to_many :sought_posts, :class_name => 'Post', :join_table => 'posts_users'

class Post < ActiveRecord::Base
  belongs_to :user
  has_and_belongs_to_many :seekers, :class_name => 'User', :join_table => 'posts_users'

我不知道“seek_posts”是否是最好的名字,但是你(希望)会让我感到震惊。我也不是100%确定是否应该在这里指定join_table,但它不会受到伤害所以我认为我会包含它。

HABTM联接表的迁移如下所示:

class CreatePostUsers < ActiveRecord::Migration
  def change
    create_table :posts_users, :id => false do |t|
        t.references :post
        t.references :user
    end
    add_index :posts_users, [:post_id, :user_id]
    add_index :posts_users, [:user_id, :post_id]
  end
end

答案 1 :(得分:0)

我不是专家,但我认为下面的内容会很好 Posts和LikedPosts都包含:user_id列 LikedPosts也只包含:post_id。

然后可以使用

调用帖子
User.posts.all
User.liked_posts.all

模型将如下相关:

class User < ActiveRecord::Base 
  has_many :posts
  has_many :liked_posts

class Post < ActiveRecord::Base
  belongs_to :user

class LikedPost < ActiveRecord::Base
  belongs_to :user
  has_many :posts

希望有所帮助。