2013-04-22 143 views
0

对于一个学校项目,我们要创建一个集成了服务器一些传感器,并使用数据源的Android应用程序,所以我决定做一个地理缓存克隆,但对我的本地大学。SQL/Ruby on Rails项目

大学建议使用Axis2,但我已决定使用Ruby on Rails的服务器部分。我从来没有学过Ruby on Rails,所以我一直在网上阅读教程和指南,所以我仍然是一个新手!

目前,我有一个用户模式的设置,与项目的关联。用户模型具有名称和电子邮件的字段。项目具有位置,名称和关键字。

我希望服务器能够做到的事情是,当用户创建一个新项目并上传其坐标,一个关键字随机生成并返回给用户时,有没有办法做到这一点?

回答

1

要创建你可以在你的Item模型使用before_create回调关键字:

class Item < ActiveRcord::Base 
    before_create :generate_keyword 

    private 

    def generate_keyword 
    random_string = SecureRandom.hex(13) 
    # returns a random string like => "ec8688e16cbbb4cf4b857f865f" 
    self.keyword = random_string 
    end 
end 

这是如何工作的:

before_create创建一个新的Item对象之前,会自动运行,其他方法包括after_createbefore_saveafter_savesave回调运行每一个对象被保存的时间,所以不只是当它的创建,而且当它的更新。

所以,我命名为before_create方法generate_keyword。然后,它会查找该名称的方法并运行它。第一行创建一个随机字符串,第二行将其分配给新的Item对象的keyword属性。您需要确保您的items表具有keywork列才能使用。

keyword仅在创建对象(第一次保存)之前分配,因此不需要将对象保存在方法的末尾。

+0

那么你将如何把它的关键字输入到项目的模式? generate_keyword是否会自动将其返回给模型?我想创建一个哈希词类型的东西:) – 2013-04-22 01:53:19

+0

看看我更新的答案。 – 2013-04-22 02:16:50

+0

哦!真棒!谢谢!这超级有用:D – 2013-04-22 02:18:29