首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ruby中使用模型和omniauth标识的关联问题

ruby中使用模型和omniauth标识的关联问题
EN

Stack Overflow用户
提问于 2014-01-03 01:10:06
回答 1查看 85关注 0票数 0

我有一个视频模型,我试着把它和杂物身份联系起来。omniauth运行得很好。我试图实现的是,当一个人登录并提交视频时,我希望该视频能够与提交它的用户相关联。

我在视频模型中设置了belongs_to :user和一个名为user_uid的列。我还在用户模型中设置了has_many :videos。

问题是,每当我提交一个新的视频时,我得到的uid是1(这是默认值)。那是怎么回事呢?

视频模型:

代码语言:javascript
复制
class Video < ActiveRecord::Base
    belongs_to :user
    end

用户模型:

代码语言:javascript
复制
class User < ActiveRecord::Base

  has_many :videos
  def self.from_omniauth(auth)
    find_by_provider_and_uid(auth["provider"], auth["uid"]) || create_with_omniauth(auth)
  end

  def self.create_with_omniauth(auth)
    create! do |user|
      user.provider = auth["provider"]
      user.uid = auth["uid"]
      user.name = auth["info"]["name"]
    end
  end
end

下面是当前的模式:

代码语言:javascript
复制
  create_table "users", :force => true do |t|
    t.string   "provider"
    t.string   "uid"
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "videos", :force => true do |t|
    t.string   "title"
    t.string   "description"
    t.string   "url"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "submitted_by"
    t.string   "identity_id",  :default => "1"
    t.string   "user_uid",     :default => "1"
  end

视频提交页面代码:

代码语言:javascript
复制
<%= form_for(@video) do |f| %>
  <% if @video.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@video.errors.count, "error") %> prohibited this video from being saved:</h2>

      <ul>
      <% @video.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description %><br />
    <%= f.text_field :description %>
  </div>
  <div class="field">
    <%= f.label :url %><br />
    <%= f.text_field :url %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
EN

Stack Overflow用户

发布于 2014-01-03 02:21:03

简单的解决方案--除了登录之外,不要使用OmniAuth的uid。一旦用户登录,您将拥有一个用户id,Rails可以更容易地处理该用户id。将您的videos.user_uid列重命名为user_id并快乐。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20887965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档