Rails模型has_many

我今天开始学习rails并不太确定它是如何工作的: 可以说我有一家公司,该公司可能有很多子公司。 子公司是公司。 由于显而易见的原因,公司不能成为自己的子公司。 子公司不能拥有也是公司子公司的子公司 所以子公司也可以拥有子公司,所以它无限制地嵌套 我不确定的是,子公司是一家公司 class Company < ActiveRecord::Base has_many :subsidiaries end class Subsidiary < ActiveRecord::Base belongs_to :companies end 我确定这是错的,只是把东西放在这里 更新: 好的,所以我按照下面的说明操作: class Company < ActiveRecord::Base validates :name, presence: true belongs_to :company has_many :subsidiaries, foreign_key: 'company_id', class_name: 'Company' end 在我的一个模板中: 0 ? “(#{company.subsidiaries.length} subsidiaries)” :”” }”, company_path(@company, :id => company.id) %> 现在这是错误的,会发生的事情是,有子公司的Ones显示他们没有子公司,而子公司显示他们有子公司,所以基本上它现在显示它的父母,它的“孩子” 不知道为什么会这样?

Rails 3 – 在创建帐户后自动登录用户

在我的signup_process ,我有两个方法signup_process和login 。 我想在signup_process调用成功后自动为用户调用login 。 这可能吗? 在其他语言框架中,我通常只是通过传递用户名和密码的signup_process操作直接调用login控制器操作 – 但我认为这在Rails中是不受欢迎的。 有没有办法将用户数据发布到我的控制器的users.login操作? 这必须是一种常见的模式 – 我错过了什么? 🙂 提前致谢!

谷歌地图的标记变量范围(gmaps4rails gem)

我试图理解javascript,以及传递变量的方式,但我做得不太好。 我正在尝试用ajax刷新谷歌地图的标记,但什么也没发生。 我提交了一个表单,它将一些变量发送给控制器。 处理了一些东西,它用.js响应…… find.js.erb $(‘#collapseTwo ul’).html(“”); alert(); clearMarkers(); markers = handler.addMarkers(, { draggable: false }); 渲染点火很好,所以一切都在那里工作,但我似乎无法抓住标记来刷新地图。 该警报显示[object Object] ,因此可能是正确的,但对标记没有任何操作。 我以marker.coffee的forms对marker.coffee进行了一些修改 clear: -> @getServiceObject().setMap(null) show: -> @getServiceObject().setVisible(true) hide: -> @getServiceObject().setVisible(false) 这样clearMarkers(); 作品。 它在另一个文件中,我正在存储其他一些操作 events.js.coffee jQuery -> … … @clearMarkers = -> for marker in Gmaps.store.markers marker.clear() Gmaps.store.markers = [] 所以…我最初打电话给地图… jQuery -> handler = Gmaps.build […]

如何在Rails 5.1中运行无头浏览器系统测试?

Rails 5.1系统测试的文档有点稀疏。 我无法进行执行javascript运行的无头测试。 我认为一种方法需要安装和运行xvf。 但这比我在其他版本的rails中运行capybara时使用的手动设置更多。 实现这一目标最简单的方法是什么?

Ruby on Rails:路由未正确更新

我已经定义了以下路线: get ‘invites/search’, to: ‘invites#edit’, controller: :invites 我改变了: get ‘invites/search’, to: ‘invites#show’, controller: :invites 控制器如下: def show @invite = Invite.find(params[:id]) end … def edit # If the request is a search containing an ‘invite_code’ if params.has_key?(:invite_code) @invite = Invite.where(invite_code: params[:invite_code]).first else @invite = Invite.find(params[:id]) end end 我收到以下错误: ActiveRecord::RecordNotFound in InvitesController#show Couldn’t find Invite with ‘id’=search […]

使用rails中的复合键更新模型嵌套属性

我有一个具有one_to_many关系的模型: class Work < ActiveRecord::Base has_many :work_right_holders accepts_nested_attributes_for :work_right_holders, allow_destroy: true end class WorkRightHolder < ActiveRecord::Base self.primary_keys = :work_id, :right_holder_id, :role belongs_to :work belongs_to :right_holder end 当我尝试使用嵌套属性更新work时,它会在关系中创建对象的新实例,而不是基于其主键更新现有实例: work.update( {“work_right_holders_attributes”=> { “0”=>{ “role”=>”Author”, “right_holder_id”=>”2”, “work_id”=>work.id, “share”=>”11” } } } ) 为什么会这样?

如何从Ruby代码连接到mongodb?

如何从Ruby代码连接到mongodb?

尝试从连接模型中读取属性时不会出现方法错误

我有项目和用户通过has_many加入:通过称为所有权的连接模型。 每个所有权都有我要访问的owner_type属性。 我想有办法将user_id传递给项目模型,并通过所有权连接模型获取owner_type。 反之亦然我想将project_id传递给用户模型并通过所有权连接模型获取owner_type。 这是我有的: class Project :ownerships validates :name, :presence => true, :length => { :maximum => 50 } def owner_type?(user_id) @user_id = user_id @ownership = self.ownerships.where(:user_id => @user_id) @ownership.owner_type end end class User :ownerships accepts_nested_attributes_for :projects email_regex = /\A[\w+\-.]+@[az\d\-.]+\.[az]+\z/i validates :name, :presence => true, :length => { :maximum => 50 } #validates :email, […]

Rails 5.1 group_by年和月,并显示两者

我正在为我的费用开发一个rails应用程序。 我有3个模型,如:用户,支出和货币。 我可以通过表单创建支出,我有标题,描述,金额,currency_id,user_id。 所有的关系都是有效的。 我使用来自用户控制器的show.html.erb来显示current_user的所有费用。 这很好。 然后我将费用分组在一起并按日期排序。 我实际上做了两组,第一组是今天和其他组。 因此,在显示屏上显示我今天创建的费用列表(第一组),然后是月份列表,其中包含前一个日期(第二组)的费用。 现在它显示了这个: Today Expense 1… Expense 2… January … … … December … … 等等… 我想在月份旁边添加年份,以便它显示如下: Today … … January 2018 … … December 2017 … … 除此之外,我希望将这个月和年份作为一个链接,这样当您点击它时,您将转到一个新页面,仅显示该特定月份的所有费用。 多数民众赞成。 是的,我也使用will_paginate。 现在我做的就是这个,让我们从我的UsersController开始: class UsersController params[:page], :per_page => 10) #Retrives all messages and divides into two groups todays messages […]

捆绑更新rake没有修复我的’你已经激活了rake …’错误

当我在Ubuntu终端中运行rake db:migrate ,我不断收到错误: rake aborted! You have already activated rake 10.0.4, but your Gemfile requires rake 0.9.6. Using bundle exec may solve this. 我在stackoverflow上看到一种解决这个问题的方法是运行: bundle update rake 所以我这样做,我得到: Fetching gem metadata from https://rubygems.org/……. Fetching gem metadata from https://rubygems.org/.. Enter your password to install the bundled RubyGems to your system: Using rake (0.9.6) Using SystemTimer (1.2.3) […]