【问题标题】:Adding "linked accounts" (e.g., Twitter, Facebook) to a Rails 3 website将“链接帐户”(例如 Twitter、Facebook)添加到 Rails 3 网站
【发布时间】:2011-08-02 14:46:39
【问题描述】:

这不是关于如何使用 Twitter 或 Facebook API 的问题,而是关于如何保持数据库同步的更简单的问题。我想要做的是创建一个新的链接帐户,然后将其附加到当前用户。我知道我的代码目前无法正常工作:

在编辑个人资料页面上

<%= f.label :account %> <i>(link another account to this profile)</i><br />

<% form_for @user.linked_accounts do |f| %>
<%= f.text_field :username %>
  <%= f.collection_select :service, User::POSSIBLE_SERVICES, :to_s, :to_s, 
   :include_blank => true
  %>
<%= f.submit %>
<% end %>

如何让它提交到设计数据库?这绝对是我需要修复的“ form_for @user.linked_accounts ”。我将其更改为 @user 并收到无方法错误,因为 :service 仅在链接帐户中定义。我认为我需要做的是创建一个新的关联帐户,然后执行 form_for @user.new_account。

我收到的错误是:
SQLite3::SQLException: no such column: linked_accounts.user_id: SELECT "linked_accounts".* FROM "linked_accounts" WHERE ("linked_accounts".user_id = 1)

【问题讨论】:

  • 您收到的错误表明您的数据库中没有此列尝试先修复它
  • 我知道——问题是我需要为当前用户创建一个新的关联帐户,但我不知道如何
  • 您想将现有用户链接到 twitter、facebook 等...我是吗?你为什么不使用omniauth?
  • 这与 twitter facebook api 无关。这是一个更简单的问题,关于如何让用户数据库与帐户数据库链接。
  • 啊抱歉我的英语不太好...你只是想添加一个链接到用户的表格或列?

标签: ruby-on-rails ruby database devise


【解决方案1】:

有一个 railscast 可以处理这个问题。它使用属于用户表的授权表,因此您可以将 twitter、facebook 等添加到用户

演员阵容超过 2 集,并使用了omniauth,这是一个非常巧妙的解决方案。你可以在这里找到它们 http://railscasts.com/episodes/235-omniauth-part-1 http://railscasts.com/episodes/236-omniauth-part-2

【讨论】:

    【解决方案2】:

    如果我正确理解您的问题,这可能是您的解决方案:

    • 创建一个包含社交网络信息的新模型
    • 使用nested model 允许通过编辑用户表单添加社交

    就是这样

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 2023-02-15
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2012-10-27
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多