Tag: 模型

Rails:attr_accessor和attr_accessible之间的区别

有什么不同? 另外,为什么这不起作用: 未设置base_path等变量。 class Cvit < ActiveRecord::Base attr_accessible :species,:program,:textup,:e_value,:filter,:min_identity,:cluster_dist,:fileup_file_name attr_accessor :base_path, :fa_file, :text_file, :dbase, :source, :bl_file, :bl_sorted, :gff_file, :cvt_file, :db, :overlay_coords_gray def initilize(*args) super(*args) end def cvitSetup() self.base_path = "blast_cvit/" self.fa_file = "input.fa" . . end end 在rails控制台中,属性设置正确但是当我尝试这样做时: 控制器: def show @cvit = Cvit.find(params[:id]) @cvit.cvitSetup() @cvit.blast() @cvit.generateGff() @cvit.generateCvitImage() respond_to do |format| format.html # show.html.erb format.xml […]

Ruby on Rails:NilClass的未定义方法`model_name’:Class

我试图允许用户将项目输入数据库。 其中一个字段允许他们为该项目输入多种技术。 这是我的项目控制器,新建和创建动作。 def new @project = Project.new @all_technols = Technol.all @project_technol = @project.projecttechnols.build respond_to do |format| format.html # new.html.erb format.json { render json: @project } end end def create @project = Project.new(params[:project]) params[:technols][:id].each do |technol| if !technol.empty? @project.projecttechnols.build(:technol_id => technol) end end end 这是我的多选技术下拉列表的新项目视图。 true} ) %> 目前,我有一个用户可以输入新技术的页面。 但我想将此选项移至创建新项目页面,在该页面中,他们可以选择现有技术,也可以输入新技术,或同时执行这两项,并且可以使用该项目进行保存。 编辑:更改问题,以及添加模型文件 当我尝试保存新项目时,我收到此错误。 undefined method `model_name’ […]

网络抓取Rails App过度建模?

我想知道我是否过度建模我的应用程序。 在这个应用程序中,我正在保存我从网站下载的html元数据。 我下载了meta标签,使它们成为一个数组的一部分。 对于meta_tags数组中的每个元素,我想保存该元素。 但我需要考虑的情况,例如,有两个机器人元元数据(一个用于索引,一个用于跟随)。 所以我最初的想法是通过创建一个“meta_tags”表并将任何元标记保存到其中来解决这个问题。 这会使网站表格保持精简状态。 我只是指定站点表有许多meta_tags。 但后来我意识到meta_tags会有很多重复的条目。 例如,如果我有两个网站有两个机器人元标签(同样,一个用于索引,一个用于跟随),那么当我只有两个唯一记录时,我在该表上有四行。 所以现在我认为我应该让网站模型下载html,然后有一个名为“meta标签”的单独模型,列出所有独特的元标记。 然后,我将通过名为“site_meta_tags”的连接表将sites表与meta_tags表相关联,该连接表标识哪个站点具有哪个元标记。 这是设置它的最佳方法吗? 还是我让这太复杂了? 更新:我在这里发布了一个跟进问题: Rails应用程序在模型间保存方面存在问题

包装导轨2.3型号

我在Rails上运行了一个现有的webapp。 计划是设置一个新服务器,它将提供API服务,并最终将webapp更新为此API的客户端。 实现这一目标的好方法似乎是将所有模型打包为gem并在两个应用程序之间共享它们。 最终,API服务将是单一的 – 包含所有模型,但是有一段时间需要共享模型的开发/迁移。 API和webapp都将使用相同的数据库。 在开始打包我的所有模型之前,我需要考虑什么? 是否值得将所有模型打包到一个gem中,单独打包每个模型,或者进行某种模型的逻辑分组? 我如何处理gem的依赖关系? 作为参考,这是一个类似的问题: 使用gem分享Rails应用程序之间的模型 我也熟悉将Ruby代码打包为Rubygem。 (这可能解释了我上面的一些问题。) [编辑]我使用的是Rails 2.3.14,而不是Rails 3.X.

如何以及在何处处理相关记录的更新过程?

我正在使用Ruby on Rails 4,我想通过update_attributes方法正确处理相关记录的更新和创建过程。 也就是说,我有以下几点: # Model class Article < ActiveRecord::Base has_many :categories accepts_nested_attributes_for :categories end # Controller class ArticlesController [:name, …]) end end # Logger for the update request Started PATCH “/articles/6” Processing by ArticlesController#update Parameters: {“utf8″=>”✓”, “article”=>{“title”=>”Sample title”, “categories_attributes”=>{“0″=>{“name”=>”Sample Category 1”, “…”=>”…”}, “1”=>{“name”=>”Sample Category 2”, “…”=>”…”}, : “…” => {…}} … 该问题与Rails处理更新数据库中相关记录的方式有关,在我的情况下,通过@article对象更新类别时:提交数据时触发update操作,并将参数传递给update_attributes方法(如在上面的记录器中显示)然后Rails在数据库中创建新的类别记录,一个用于散列categories_attributes存在的每个元素。 但是, […]

Rails有很多关系

我正在编写一个应用程序,用户既可以创建自己的页面供人们发帖,也可以关注用户创建的页面上的post。 这就是我的模特关系目前的样子…… class User :followings, :source => :user class Page :followings class Following < ActiveRecord::Base belongs_to :user belongs_to :page class Post < ActiveRecord::Base belongs_to :page belongs_to :user 当我尝试在关系中努力工作以创建给定用户正在关注的页面(和相应post)的主页时,就会出现问题(类似于Twitter登录时用户主页的工作方式 – 提供给您的页面您所关注页面中所有最新post的综合视图)… 当我尝试调用followings.pages时,我收到“找不到方法”错误。 理想情况下,我希望能够以一种方式调用User.pages,以获取用户所关注的页面,而不是他们创建的页面。 我是一个编程和Rails newb,所以任何帮助将不胜感激! 在发布此问题之前,我尝试尽可能多地搜索此网站(以及众多Google搜索),但似乎没有什么比我的问题更具体……

Ruby NoMethodError – BlahController的未定义方法`blah_url’

我从一个链接调用这个js: function createNewTopLevelEntry(){ var user_id = $(“#user”).val(); var header = prompt(“Enter the name”); $.ajax( ‘/users/’ + user_id + ‘/entries’, { data: { entry: { header: header, user: user_id } }, type: ‘POST’, cache: false, dataType: ‘json’, success: displayTopLevelEntries }); } 它击中了这个控制器: def create @entry = Entry.new(params[:entry]) respond_to do |format| if @entry.save format.html { redirect_to @entry, […]

Rails – 超类不匹配

使用Rails和控制器inheritance。 我创建了一个名为AdminController的控制器,在/app/controllers/admin/admin_user_controller.rb放置了一个名为admin_user_controller的子类。 这是我的routes.rb namespace :admin do resources :admin_user # Have the admin manage them here. end 应用程序/控制器/管理/ admin_user_controller.rb class AdminUserController < AdminController def index @users = User.all end end 应用程序/控制器/ admin_controller.rb class AdminController < ApplicationController end 我有一个用户模型,我想用管理员权限编辑。 当我尝试连接到: http://localhost:3000/admin/admin_user/ 我收到此错误: superclass mismatch for class AdminUserController

访问父对象属性的“rails方式”是什么?

假设我有模特Doctor和模特Patient 。 Patient belongs_to a Doctor 。 Doctor有一个属性office 。 我想,如果有Patient p ,可以说p.office并访问p ‘s Doctor的office 。 我总是可以写一个方法 class Patient belongs_to :doctor def office self.doctor.office end 但有没有更自动的方式将所有Doctor的属性方法暴露给Patient ? 也许使用method_missing来拥有某种catch-all方法?

Rails – 一个具有两个关联的模型

我有模型Member ,其中包含有关我网站上注册成员的所有信息。 然后我有模型Message ,其中包含2列(实际上3个带有id ): – member_id – message_from 在表中Messages存储用户的ID,如何在一起聊天 – 当成员A向成员B发送消息时,所以在列member_id中保存人A的 ID并进入人B的列message_from ID。 我目前的协会看起来像: class Member < ActiveRecord::Base has_many :messages_from end class Message < ActiveRecord::Base belongs_to :member end 我不知道,当我尝试时,我怎么能得到存储在message_from列中的人的名字 – @member.messages_from.each do |mess_from| ={mess_from.name} 所以我得到错误undefined method “name” for …我怎么能通过存储在message_from列中的ID获取用户的名称? 编辑 – 更新关系: class Member < ActiveRecord::Base has_many :messages end class Message ‘user_id’, :class_name => […]