Ruby on rails 关系在RubyonRails中属于

Ruby on rails 关系在RubyonRails中属于,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我在rails中的两个模型之间有一个关系。我有模型用户和模型启动 class Startup < ActiveRecord::Base attr_accessible :angelist, :capitalraise, :category, :country, :currentlocation, :description, :facebook, :linkedin, :name, :round, :startupchile, :twitter, :user_id has_one :

我在rails中的两个模型之间有一个关系。我有模型用户和模型启动

class Startup < ActiveRecord::Base
  attr_accessible :angelist, :capitalraise, :category, :country, :currentlocation, :description, :facebook, :linkedin, :name, :round, :startupchile, :twitter, :user_id
  has_one :entrepreneus, dependent: :destroy

  belongs_to :user
end
模型用户是设计模型(gem DEVICE)

这是我的密码

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :startup_name
  # attr_accessible :title, :body

  belongs_to :startup
end
(显然我做了一次迁移)

当我在第一个时刻创建启动时,创建没有user\u id的对象,但使用update\u属性在对象中添加user\u id。(在启动控制器中)。这是密码

def create
    @startup = Startup.new(params[:startup])
    @startup.update_attributes(:user_id => current_user.id )

    respond_to do |format|
      if @startup.save
        format.html { redirect_to @startup, notice: 'Startup was successfully created.' }
        format.json { render json: @startup, status: :created, location: @startup }
      else
        format.html { render action: "new" }
        format.json { render json: @startup.errors, status: :unprocessable_entity }
      end
    end
  end
在控制台中,我执行以下操作(rails c—沙盒)

但如果你这样做:

s = Startup.find_by_user_id(1) // retrieve the data
为什么我无法检索与u.startup?的startup关联的数据

有什么想法吗?。谢谢


PDT:对不起,我的英语还是不太好。

如果两个型号之间是一对一的关系,那么您必须在表中没有外键的一侧使用。因此,在这种情况下,不是:

belongs_to :startup
你必须做到:

has_one :startup

如果这是两个模型之间的一对一关系,则必须在表中没有外键的一侧使用。因此,在这种情况下,不是:

belongs_to :startup
你必须做到:

has_one :startup

我对rails比较新,所以如果我错了,有人会纠正我,但我不认为你可以有两个彼此“属于”的模型。1必须属于,1必须有多个或有一个(编辑:根据注释,它应该是
:has\u one

我想这可能就是你想要的:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :startup_name
  # attr_accessible :title, :body

  has_one :startup # not has_many :startups
end

class Startup < ActiveRecord::Base
  attr_accessible :angelist, :capitalraise, :category, :country, :currentlocation, :description, :facebook, :linkedin, :name, :round, :startupchile, :twitter, :user_id
  has_one :entrepreneus, dependent: :destroy

  belongs_to :user
end
class用户
我对rails比较新,所以如果我错了,有人会纠正我,但我认为你不能有两个彼此“属于”的模型。1个必须属于,1个必须有多个或有一个(编辑:根据评论,应该是
:has\u one

我想这可能就是你想要的:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :startup_name
  # attr_accessible :title, :body

  has_one :startup # not has_many :startups
end

class Startup < ActiveRecord::Base
  attr_accessible :angelist, :capitalraise, :category, :country, :currentlocation, :description, :facebook, :linkedin, :name, :round, :startupchile, :twitter, :user_id
  has_one :entrepreneus, dependent: :destroy

  belongs_to :user
end
class用户
这不是
有很多
,因为你仍然不能做
u.startup
只有
u.startups
,它不会给出一个
startup
对象,而是一组对象。谢谢你的澄清。它不是
有很多
,因为你仍然不能做
u.startup
只有
u.startups
,这是在上,我们没有给出一个
Startup
对象,而是一个对象集合。感谢您的澄清。添加到@misha的答案中,您的启动模型在
attr\u accessible
中声明
:user\u id
,因此这将是
所属的模型:user
;用户将声明“has\u one:Startup”添加到@misha的答案中,您的明星tup模型在
attr\u accessible
中声明
:user\u id
,因此这将是
所属的模型:user
;用户将声明“has\u one:startup”